home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
dviware
/
dvipage
/
dvipage.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-11
|
9KB
|
401 lines
/*
* dvipage: DVI Previewer Program for Suns
*
* Neil Hunt (hunt@spar.slb.com)
*
* This program is based, in part, upon the program dvisun,
* distributed by the UnixTeX group, extensively modified by
* Neil Hunt at the Schlumberger Palo Alto Research Laboratories
* of Schlumberger Technologies, Inc.
*
* From the dvisun manual page entry:
* Mark Senn wrote the early versions of [dvisun] for the
* BBN BitGraph. Stephan Bechtolsheim, Bob Brown, Richard
* Furuta, James Schaad and Robert Wells improved it. Norm
* Hutchinson ported the program to the Sun. Further bug fixes
* by Rafael Bracho at Schlumberger.
*
* Copyright (c) 1988 Schlumberger Technologies, Inc 1988.
* Anyone can use this software in any manner they choose,
* including modification and redistribution, provided they make
* no charge for it, and these conditions remain unchanged.
*
* This program is distributed as is, with all faults (if any), and
* without any warranty. No author or distributor accepts responsibility
* to anyone for the consequences of using it, or for whether it serves any
* particular purpose at all, or any other reason.
*
* $Log: dvipage.h,v $
* Revision 1.2 88/12/15 17:22:36 hunt
* Reduced MAXOPEN to 12; leaves enough fds for popups and prompts in worst
* case: complete set of fonts, message window and popup window.
*
* Revision 1.1 88/11/28 18:42:06 hunt
* Initial revision
*
*/
/*
* Switches and flags;
* ==================
*
* Some of these constants will be customised for different installations.
*/
/*
* Define USEGLOBALMAG to see effect of mag changes in previewer;
* Best left commented out.
*/
/* #define USEGLOBALMAG 1 /* Use dvi global magnification ??? */
/*
* FONT_PATH is the environment variable searched for a font path spec.
* FONT_AREA is the default font path; a colon separated list of possible
* directories in which pxl and gf files reside.
*/
#define FONT_PATH "FONT_PATH"
#ifndef FONT_AREA
#ifdef sparc
#define FONT_AREA \
"/usr/local/lib/tex/fonts/pkb:/usr/local/lib/tex/fonts/pk"
#else !sparc
#define FONT_AREA \
"/usr/local/lib/tex/fonts/pkb:/usr/local/lib/tex/fonts/pk"
#endif sparc
#endif FONT_AREA
/*
* These constants set flag defaults; if the flag is 0, that type of
* font file will not be read.
*/
#define USE_GF 1
#define USE_PXL 1
#define USE_PK 1
/*
* Define a command which will print the whole document.
*/
#ifndef PRINT_SPOOLER
#define PRINT_SPOOLER "lpr -d %s >/dev/null 2>/dev/null"
#endif PRINT_SPOOLER
/*
* Define a command which will print the specified page of the document.
*/
#ifndef PRINT_PAGE_SPOOLER
#define PRINT_PAGE_SPOOLER \
"texpagefilter -f %d -t %d %s | lpr -d >/dev/null 2>/dev/null"
#endif PRINT_PAGE_SPOOLER
/*
* The default size of page which will be used
*/
#define PAGE_WIDTH (8.3) /* Inches */
#define PAGE_HEIGHT (11.7) /* Inches */
/*
* The default origin on the paper; this corresponds to the
* normal TeX standard; change it only if your printer or dvi processor is
* broken and you must match
*/
#define DEFAULT_ORIGIN_X (1) /* inches */
#define DEFAULT_ORIGIN_Y (1) /* inches */
/*
* default starting display... makes better use of screen.
*/
#define DEFAULT_START_X (0) /* inches */
#define DEFAULT_START_Y (0) /* inches */
/*
* These are the defaults for resolution and sampling factors
* of fonts for colour and mono screens.
*/
#define DEFAULT_MONO_RES 118
#define DEFAULT_COLOUR_RES 300
#define DEFAULT_MONO_SAMPLING 1 /* Must be 1 */
#define DEFAULT_COLOUR_SAMPLING 4
/*
* This is the default magnifier size and border width.
*/
#define DEFAULT_MAG_SIZE_X (256)
#define DEFAULT_MAG_SIZE_Y (128)
#define DEFAULT_MAG_BORDER (2)
/*
* Some limits in the program. Change for extraordinary TeX files.
*/
#ifdef NOFILE
#define MAXOPEN NOFILE-6 /* leave room for stdio, */
/* window, message,popup */
#else
#define MAXOPEN 12 /* Max number of open font files. */
#endif
#define STACKSIZE 100 /* dvi stack max length */
#define STRSIZE MAXPATHLEN /* Max string length */
#define MAX_SHEETS 512 /* Pages remembered in table */
/*
* This identifies the version number of the previewer.
*/
#define DVIPAGE_LABEL "DVI Previewer 3.0" /* Frame label */
/*
* Standard definitions.
* ====================
*/
#ifndef _TYPES_
typedef unsigned int uint;
typedef unsigned short ushort;
#endif _TYPES_
typedef unsigned char uchar;
#ifdef bool
#undef bool
#endif bool
typedef unsigned int bool;
#define DEL '\177'
#define ESC '\033'
#define Control(c) ((c) - 0x40)
#define A_ARG 0
#define A_END (-1)
#define forward extern
#define Range(min, x, max) (((x) < (min))? \
(min) : (((x) > (max))? (max) : (x)) \
)
#define MAXINT 2147483647
#define NEGMAXINT (-2147483648)
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif TRUE
/*
* System wide constants.
* =====================
*/
#define NONEXISTENT (-1) /* Offset when font file not found */
#define NO_FILE ((FILE *)-1)
#define NFNTCHARS 256
#define PXLID 1001
#define DVIFORMAT 2
#define SKIP TRUE /* Flags for process_page() */
#define RASTERISE FALSE
#define DEBUG_FONTS 1
#define DEBUG_CHARS 2
#define DEBUG_PRINTER 4
#define DEBUG_IMSIZE 8
#define DEBUG_SHEET 16
#define DEBUG_MAGNIFY 32
#define BAD_PAGE NEGMAXINT
#define LAST_PAGE MAXINT
/*
* Macros:
* return rounded number of pixels
*/
#define Pix_round(x, conv) ((int)(((x) + ((conv) >> 1)) / (conv)))
/*
* Data Structures
* ===============
*/
/*
* Character information.
* Width in pixels.
* Height in pixels.
* X offset in pixels.
* Y offset in pixels.
* Location of bits
* Flag for bits have been loaded into memory.
* offset to position in file.
* pointer to the bits.
* width.
*/
struct char_entry
{
ushort width;
ushort height;
short xOffset;
short yOffset;
struct
{
int isloaded;
union
{
int fileOffset;
struct pixrect *pixrectptr;
} address;
int flags;
} where;
int tfmw;
};
/*
* Font information.
*/
struct font_entry
{
struct font_entry *next; /* Linked list of fonts in use. */
FILE *font_file_fd; /* FP (0 if not open, -1 if unavail) */
int use_count; /* Count of number of uses of font */
int k; /* Internal font descriptor */
int c; /* checksum from DVI file */
int s; /* space size from DVI file */
int d; /* design size from DVI file */
int a; /* area length for font name */
int l; /* device length */
char n[STRSIZE]; /* FNT_DEF command parameters */
int font_space; /* computed from FNT_DEF s parameter */
int font_gf_mag; /* computed from s and d parameters */
int font_pxl_mag; /* computed from s and d parameters */
char psname[STRSIZE];/* ps name of font file */
char name[STRSIZE]; /* full name of font file */
int type; /* PXL or GF */
int magnification; /* magnification read from font file */
int designsize; /* design size read from font file */
struct char_entry ch[NFNTCHARS];/* character information */
};
#define TYPE_PXL 1
#define TYPE_GF 2
#define TYPE_PK 3
/*
* mem_pixrect:
* A statically allocatable pixrect structure.
* Contains the pixrect data and the mpr_data.
*/
struct mem_pixrect
{
struct pixrect mpr_pr;
struct mpr_data mpr_data;
};
/*
* Globals.
* =======
*/
extern struct font_entry *fontptr;
extern struct font_entry *hfontptr;
extern bool silent;
extern char pathname[STRSIZE];
extern char directory[STRSIZE];
extern char filename[STRSIZE];
extern char *font_path;
extern bool use_gf;
extern bool use_pxl;
extern bool use_pk;
extern FILE *dvifp;
extern int resolution;
extern int sampling;
extern bool mono;
extern struct mem_pixrect page_mpr;
extern struct pixrect *page_pr;
extern struct mem_pixrect sample_mpr;
extern struct pixrect *sample_pr;
extern int verbose;
/*
* External Functions.
* ==================
*/
extern int abs();
extern char * getenv();
extern double atof();
/*
* Interfaces.
* ==========
*/
/*
* In sample.c:
*/
extern void pw_cover();
extern void pw_rect();
extern void pr_rect();
forward struct pixrect * pr_alloc();
forward struct pixrect * pr_free();
forward struct pixrect * pr_check();
forward struct pixrect * pr_link();
extern void sample_page();
forward struct pixrect * pr_sample_4();
forward struct pixrect * pr_sample_34();
forward struct pixrect * pr_sample_3();
forward struct pixrect * pr_sample_2();
extern void make_cmap();
forward void pw_cover();
forward void pr_rect();
forward void pw_rect();
/*
* In fonts.c:
*/
extern bool get_font_def();
extern void skip_font_def();
extern bool read_font_def();
extern void close_fonts();
extern bool load_char();
/*
* In findfile.c:
*/
extern bool find_font_file();
/*
* In message.c:
*/
extern void message();
extern bool strings_prompt();
extern bool integers_prompt();
extern bool doubles_prompt();
/*
* In utils.c:
*/
forward unsigned int get_unsigned();
forward int get_signed();
forward double actual_factor();
forward int do_convert();
/*
* In args.c:
*/
extern char * a_prog_name;
extern char a_next();
extern char * a_arg();
extern int a_integer();
extern double a_number();